package rescsa.gob.pe.informe.dao;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import rescsa.gob.pe.informe.bean.DetalleRequerimientoActividad;
import rescsa.gob.pe.informe.bean.IntegracionBEAN;
import rescsa.gob.pe.informe.bean.RequerimientoBen;





public class MySQLInformeDAO implements IInformeDAO {
	SqlSessionFactory sqlMapper = null;//obtiene la configuracion del archivo
	{
		String archivo = "ConfiguracionIbatis.xml";//abrea la configuracion
		try {
			Reader reader = Resources.getResourceAsReader(archivo);
			sqlMapper = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public List<IntegracionBEAN> listaInformeIntegracion(String soli_importancia,String soli_prioridad) throws Exception {
		// TODO Auto-generated method stub
		
		SqlSession session = sqlMapper.openSession();
		List lista = null;
			
		System.out.println();
		
		IntegracionBEAN inte=new IntegracionBEAN();

		inte.setSoli_importancia(soli_importancia);
		inte.setSoli_prioridad(soli_prioridad);

		try {
			 lista =session.selectList("dawi.SQL_listaInformeIntegracion",inte);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;	
	}

	@Override
	public RequerimientoBen obtenerevaluarinforme(
			int intcodigo_Solictud_Requerimiento) throws Exception {
		// TODO Auto-generated method stub
		
		SqlSession session = sqlMapper.openSession();
		RequerimientoBen reque = null;
			
		try {
			reque =(RequerimientoBen) session.selectOne("dawi.SQL_VerificarIntegracion",intcodigo_Solictud_Requerimiento);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return reque;	
	}

	@Override
	public String actualizarrinformeintegracion(
			int intcodigo_Solictud_Requerimiento, String str_estado_informe)
			throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		
		
		RequerimientoBen reque=new RequerimientoBen();
		reque.setIntcodigo_Solictud_Requerimiento(intcodigo_Solictud_Requerimiento);
		reque.setStr_estado_informe(str_estado_informe);
		try {
			stroutput = ""+session.update("dawi.SQL_ActualizarInformeIntegracion", reque);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

	@Override
	public List<DetalleRequerimientoActividad> obteneractividades(int intcodigo_Solictud_Requerimiento) throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		List lista = null;
		

		try {
			 lista =session.selectList("dawi.SQL_obteneractividades",intcodigo_Solictud_Requerimiento);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;	
	}

	@Override
	public String actualizar_actividad_asignada(
			int intcodigo_Solictud_Requerimiento) throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		
		try {
			stroutput = ""+session.update("dawi.SQL_ActualizarActividadAsignacion", intcodigo_Solictud_Requerimiento);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}

	@Override
	public List<IntegracionBEAN> listaInformeIntegracionxFecha(
			Date fecha_inicio, Date fecha_fin) throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		List lista = null;
			
		System.out.println();
		
		IntegracionBEAN inte=new IntegracionBEAN();

		inte.setFecha_inicio(fecha_inicio);
		inte.setFecha_fin(fecha_fin);

		try {
			 lista =session.selectList("dawi.SQL_listaInformeIntegracionxFecha",inte);			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return lista;	
	}

	@Override
	public String actualizarRequerimientoAnalistaQA(
			int intcodigo_Solictud_Requerimiento) throws Exception {
		// TODO Auto-generated method stub
		SqlSession session = sqlMapper.openSession();
		String stroutput ="";
		
		
		RequerimientoBen reque=new RequerimientoBen();
		reque.setIntcodigo_Solictud_Requerimiento(intcodigo_Solictud_Requerimiento);
		try {
			stroutput = ""+session.update("dawi.SQL_ActualizarRequerimientoAsignadoAnalista", reque);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		System.out.println("dao "+stroutput);
		return stroutput;
	}



}
